/**
 * 
 */
package com.yidu.erp.action.fdpurchase;

import java.text.ParseException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.yidu.common.Pages;
import com.yidu.common.SsmMessage;
import com.yidu.common.Tools;
import com.yidu.erp.model.BeyondAnnex;
import com.yidu.erp.model.BeyondFdproform;
import com.yidu.erp.model.BeyondProlistmxsmall;
import com.yidu.erp.model.BeyondStaff;
import com.yidu.erp.model.BeyondWare;
import com.yidu.erp.service.fdannex.BeyondAnnexService;
import com.yidu.erp.service.fdpurchase.FdproFormService;
import com.yidu.erp.service.fdpurchase.ProListMxmallService;
import com.yidu.erp.service.ware.WareService;
/**
 * 分店采购的view
 * @author liao
 */
@Controller
@RequestMapping("fdprofrom")
public class FdproFormAction {

	@Resource
	public FdproFormService fdproForm;

	@Resource
	public ProListMxmallService mallService;

	@Resource
	public BeyondAnnexService  fdAnnex;
	
	@Resource
	private WareService drugService;//商品抽象类

	/**
	 * 查询所有商品
	 * @param record 商品信息
	 * @return
	 */
	@RequestMapping("/selectWareAll")
	@ResponseBody
	public List<BeyondWare> selectWareAll(BeyondWare record){
		//查询商品
		List<BeyondWare>  list=fdproForm.selectAll(record);
		//返回list·
		return list;
	}
	
	/**
	 *根据ID查询药品 
	 * @param name 关键字
	 * @return
	 */
	@RequestMapping("/selectMes")
	@ResponseBody
	public BeyondWare selectMes(String wareId){
		//根据ID查询药品 
		BeyondWare ware=drugService.selectByPrimaryKey(wareId);
		//返回药品
		return ware;
	}
	
	
	

	/**
	 * 删除采购单和明细
	 * @param fdproId 采购ID
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	@RequestMapping("/deletefdpro")
	@ResponseBody
	public SsmMessage deletefdpro(String fdproId){
		//消息类
		SsmMessage ssm=new SsmMessage();
		//循环删除明细
		List<BeyondProlistmxsmall> list=mallService.selfdProlistmxsmall(fdproId);
		for (Iterator iterator = list.iterator(); iterator.hasNext();) {
			BeyondProlistmxsmall beyondProlistmxsmall = (BeyondProlistmxsmall) iterator.next();
			//根据采购ID删除明细
			mallService.deleteByPrimaryKey(beyondProlistmxsmall.getFdprolistmxId());
			
		}
		//删除采购单
		int rows=fdproForm.deleteByPrimaryKey(fdproId);
		
		if(rows>0){
			ssm.setMes(SsmMessage.SUCCESS_MES);
			ssm.setState(SsmMessage.SUCCESS);
		}else{
			ssm.setMes(SsmMessage.ERROR_MES);
			ssm.setState(SsmMessage.ERROR);
		}
		return ssm;
		
	}
	
	


	/**
	 * 根据订单编号查看订单明细
	 * @param fdproId 订单编号
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showFdcgmx")
	public ModelAndView showFdcgmx(String fdproId){
		//返回页面
		ModelAndView view=new ModelAndView("fdprocurementFrom");
		//得到明细集合
		List<BeyondProlistmxsmall> list=mallService.selfdProlistmxsmall(fdproId);
		//返回集合
		view.addObject("fdcureMxList", list);
		return view;
	}



	/**
	 * 查询采购订单信息
	 * @param param 采购属性
	 * @param limit 每页数量
	 * @param page  页数
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/allfdProfrom")
	public Map<String, Object> allfdProfrom(@RequestParam Map<String, Object> param, int limit, int page,HttpSession session) throws ParseException{
		//得到登录信息
		BeyondStaff staff=(BeyondStaff) session.getAttribute("staff");
		//得到登录人所属分店
		param.put("annexId", staff.getAnnexId());
		//页数
		Pages pages = new Pages();
		//总行数
		pages.setMaxResult(limit);
		//当前页面
		pages.setCurPage(page);
		//查询数据
		param.put("pages", pages);
		//返回查询数据
		return fdproForm.AllFdcure(param);

	}

	
	/**
	 * 增加采购订单
	 * @param record 订单表数据  tabStr表示订单明细的数据 
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/addfdProfrom")
	public SsmMessage addfdProfrom(BeyondFdproform record,HttpSession session ){
		//消息类
		SsmMessage ssm=new SsmMessage();
		//获取登录信息
		BeyondStaff staff=(BeyondStaff) session.getAttribute("staff");
		//得到采购人信息
		record.setStaff(staff);
		//分店
		BeyondAnnex annex=new BeyondAnnex();
		//得到分店信息
		annex.setAnnexId(staff.getAnnexId());
		//增加分店信息
		record.setAnnex(annex);
		
		//得到当前时间,作为采购的时间
		Date date=new Date();
		//先增加分店采购单,总价和总数量是界面上丢过来
		record.setFdproTime(date);
		//审核状态 10为未审核 
		record.setFdproIvso("0");
		//订单编号
		String number=Tools.getDateOrderNo();
		//设置订单编号
		record.setFdproNumber(number);
		//增加采购订单信息
		fdproForm.insertSelective(record);

		//增加分店采购明细
		String fdMxtab=record.getTabstr().replaceAll(" ", "");//去掉空格
		//分割出每行的数据
		String tr[]=fdMxtab.split("_");
		//循环数据
		for (int i = 0; i < tr.length; i++) {
			//分割出td中的数据
			String td[]=tr[i].split("~");
			//新建一个明细表实体类
			BeyondProlistmxsmall mx=new BeyondProlistmxsmall();
			//循环数据
			for (int j = 0; j < td.length; j++) {
				//设置明细表编号
				mx.setFdprolistmxNumber(number);
				
				//查询商品id
				BeyondWare ware=new BeyondWare();
				//第0个表示商品id
				ware.setWareId(td[0]);
			    //得到商品ID
				mx.setWare(ware);
				//采购单id
				mx.setFdcure(record);
				//第3个表示是商品单价
				String moneystr=td[3].toString();//格式是9000，取出9000
				//加入商品单价
				mx.setFdprolistmxDj(Double.valueOf(moneystr));
				
				//第4个表示是单品数量
				String countstr=td[4].toString().split("/")[0];//格式是5/盒,取出5
				//得到加入数量
				mx.setFdprolistmxCount(Integer.valueOf(countstr));
				
				//第5个表示单品总价
				String summoneystr=td[5].toString();//格式是9000/元
				//得到加入单品总价格
				mx.setFdprolistmxMoney(Double.valueOf(summoneystr));
				
				//设置时间
				mx.setFdprolistmxTime(date);
			}
			//调用增加分店采购明细的方法
			int ros=mallService.insertSelective(mx);

			if(ros>0){
				ssm.setMes(SsmMessage.SUCCESS_MES);
				ssm.setState(SsmMessage.SUCCESS);
			}else{
				ssm.setMes(SsmMessage.ERROR_MES);
				ssm.setState(SsmMessage.ERROR);
			}
		}
		//返回消息类
		return ssm;
	}


}
